package com.cyan.note.dto.manager.order;

import lombok.Data;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单创建DTO
 * 
 * @author ZhangzhenYu
 * @since 2025-01-15
 */
@Data
public class OrderCreateDTO {

    /**
     * 订单类型
     */
    @NotBlank(message = "订单类型不能为空")
    private String orderType;

    /**
     * 订单来源
     */
    @NotBlank(message = "订单来源不能为空")
    private String orderSource;

    /**
     * 客户ID（如果是老客户）
     */
    private Long customerId;

    /**
     * 客户姓名
     */
    @NotBlank(message = "客户姓名不能为空")
    private String customerName;

    /**
     * 客户电话
     */
    @NotBlank(message = "客户电话不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String customerPhone;

    /**
     * 客户微信
     */
    private String customerWechat;

    /**
     * 客户地址
     */
    private String customerAddress;

    /**
     * 服务ID
     */
    @NotNull(message = "服务ID不能为空")
    private Long serviceId;

    /**
     * 服务名称
     */
    @NotBlank(message = "服务名称不能为空")
    private String serviceName;

    /**
     * 订单金额
     */
    @NotNull(message = "订单金额不能为空")
    @DecimalMin(value = "0.01", message = "订单金额必须大于0")
    private BigDecimal orderAmount;

    /**
     * 实际金额
     */
    private BigDecimal actualAmount;

    /**
     * 折扣金额
     */
    private BigDecimal discountAmount;

    /**
     * 服务时长（小时）
     */
    @NotNull(message = "服务时长不能为空")
    @Min(value = 1, message = "服务时长至少1小时")
    private Integer serviceDuration;

    /**
     * 预约时间
     */
    @NotNull(message = "预约时间不能为空")
    private LocalDateTime appointmentTime;

    /**
     * 备注
     */
    private String remark;

    /**
     * 是否立即分配打手
     */
    private Boolean autoAssign = false;

    /**
     * 指定的打手ID列表（如果自动分配）
     */
    private Long[] workerIds;
}